#ifndef __FOR__HPP__
#define __FOR__HPP__

// template <class B, int PLACE, bool A>
// constexpr UpperBound<B, PLACE> 
// operator<=(Term<PLACEA, Var, A> const & a, B const & b)
// {
//   return UpperBound<B, PLACE>(ExprT(a,b));
// }

// template <class A, class B, int PLACE>
// constexpr std::pair<A, B>
// FOR(VariableTerm<PLACE> const & t, LowerBound<A, PLACE> const & a, 
//     UpperBound<B, PLACE> const & b) {
//   // return std::pair<A, B> (a.expr_, b.expr_);
//   return {a.expr_, b.expr_};
// }

template <class A, class B, int PLACE>
constexpr std::pair<A, B>
FOR(VariableTerm<PLACE> const & t, A const & a, 
    B const & b) {
  return std::pair<A, B> (a.expr_, b.expr_);
  // return {a, b};
}

// template <class A, class B, int PLACE>
// inline constexpr std::pair<Expression<BinaryExpression<VariableTerm<PLACE>, A, CmpGE> > ,
//                     Expression<BinaryExpression<VariableTerm<PLACE>, B, CmpLE> > >
// FOR(VariableTerm<PLACE> const & t, A const & a, B const & b) {
//   // return std::pair<A, B> (a.expr_, b.expr_);
//   return {t>=a, t<=b};
// }

#endif //__FOR__HPP__
